package com.yidu.t286.controller;
/*
 * @description:管理员对象控制类
 * @author:文杰
 * @date  :2021/7/31 0031下午 9:54
 */

import com.yidu.t286.biz.impl.AdmimBizImpl;
import com.yidu.t286.domain.Admim;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

@Controller
@CrossOrigin
public class AdmimController {

    @Autowired
    private AdmimBizImpl admimBiz;



    /**
     * 按条件分页查管理员对象
     * @param page 页数
     * @param limit 行数
     * @param adminuser 管理员姓名
     * @return map集合
     */
    @GetMapping("/adminpage")
    @ResponseBody
    public Map<String,Object> selectadmin(int page, int limit, String adminuser){
        //定义用于构造多条件查询的管理员对象
        Admim admim= new Admim();
        //判断并加入到基本参数对象中
        if(adminuser!=null && adminuser.trim().length()!=0){
            admim.setAdminuser(adminuser);
        }
        //调用数据方法，根据用户对象构造查询条件字符串
        String condition=admimBiz.getCondition(admim);
        //执行多条件分页查询
        List<Admim> admimList=admimBiz.findByPage(limit,page,condition);
        //多条件查询表中总记录数
        int totalRows=admimBiz.count(condition);

        //定义映射集合对象
        Map<String,Object> mapData=new HashMap<String,Object>();
        //在映射集合中添加key为code，值为0的状态码
        mapData.put("code",0);
        //在映射集合中添加key为msg,值为响应信息字符串
        mapData.put("msg","");
        //在映射集合中添加key为count,值总行数的数据对
        mapData.put("count",totalRows);
        //在映射集合中添加key为data,值为员工集合对象
        mapData.put("data",admimList);
        //直接返回对象
        return mapData;
    }


    /**
     * 查询所有数据的集合
     * @return
     */
    @GetMapping("/adminAll")
    @ResponseBody
    public List<Admim> findAll(){
        //调用业务层方法,查询所有数据
        List<Admim> admimList=admimBiz.findAll();
        return admimList;
    }

    /**
     * 判断登陆是否成功
     * @param admim
     * @return
     */
    @GetMapping("/admimlogin")
    @ResponseBody
    public Admim admimlogin(HttpServletRequest request,Admim admim){
        //定义一个返回值
        String result="";
        //查询所有用户数据
        List<Admim> admimList=admimBiz.findAll();
        Admim admim2=new Admim();
        //循环遍历所有管理员数据
        for (Admim admim1:admimList){
            //判断用户名和密码是否正确
            if (admim1.getAdminuser().equals(admim.getAdminuser()) && admim1.getAdminPassword().equals(admim.getAdminPassword())){
                //生成token
                String token= String.valueOf(UUID.randomUUID());
                //将token赋值到用户对象中
                admim1.setAdmintoken(token);
                //修改token
                admimBiz.update(admim1);
                //得到用户对象中的token
                result=admim1.getAdmintoken();
                //通过管理员编号查询角色ID
                int roleId=admimBiz.findByAdminId(admim1.getAdmimId());
                admim2.setRoleId(roleId);
                admim2.setAdmintoken(token);
            }
        }
        return admim2;
    }

    /**
     * 修改数据
     * @param admim
     * @return
     */
    @RequestMapping("/updateadmim")
    @ResponseBody
    public String update(Admim admim){
        admim.setAdminPassword("123456");
        admim.setAdmintoken("123");
        int rows=admimBiz.update(admim);
        return rows>0?"update success":"failure";
    }

    /**
     * 增加数据
     * @param admim
     * @return
     */
    @RequestMapping("/addadmim")
    @ResponseBody
    public String add(Admim admim){
        admim.setAdminPassword("123456");
        admim.setAdmintoken("123");
        int rows=admimBiz.add(admim);
        return rows>0?"add success":"failure";
    }

    /**
     * 删除数据
     * @param admimId
     * @return
     */
    @RequestMapping("/deleteadmim/{admimId}")
    @ResponseBody
    public String add(@PathVariable int admimId){
        //调用业务层删除方法
        int rows=admimBiz.delete(admimId);
        return rows>0?"success":"failure";
    }


    /**
     * 循环删除管理员对象
     * @param admimStr 管理员编号字符串
     * @return 信息字符串
     */
    @RequestMapping("/batchDel/{admimStr}")
    @ResponseBody
    public String batchDelById(@PathVariable String admimStr){
        //对员工编号字符串按照","分割
        String[] admimIds=admimStr.split(",");
        //定义一个返回值
        String result="success";
        //循环删除
        for (String str:admimIds){
            //转换类型
            int admimId=Integer.parseInt(str);
            //调用业务层删除记录
            int rows= admimBiz.delete(admimId);
            //判断
            if (rows<=0){
                result="batch delete failure";
                break;
            }
        }
        return result;
    }
}
